module('strfrime', {
  setup: function() {
    // 2010-01-01 00:00:00 +0000
    this.soe = ADT.fromTimestamp(1262304000);
    this.soe.setTZOffset(0);

    // 2010-07-12 07:34:41 +0000
    this.moe = ADT.fromTimestamp(1278920081);
    this.moe.setTZOffset(0);

    // 2010-12-31 23:59:59 +0000
    this.eoe = ADT.fromTimestamp(1293839999);
    this.eoe.setTZOffset(0);

    // 2010-07-12 07:34:41 +0300
    this.local = ADT.fromTimestamp(1278909281);
    this.local.setTZOffset(10800);
  }
});

test('ADT.strftime', function() {
  expect(121);

  equals(
    this.soe.strftime('%r'),
    '12:00:00 AM',
    'soe.strftime(\'%r\')');

  equals(
    this.moe.strftime('%r'),
    '07:34:41 AM',
    'moe.strftime(\'%r\')');

  equals(
    this.eoe.strftime('%r'),
    '11:59:59 PM',
    'eoe.strftime(\'%r\')');

  equals(
    this.local.strftime('%r'),
    '07:34:41 AM',
    'local.strftime(\'%r\')');

  equals(
    this.soe.strftime('%R'),
    '00:00',
    'soe.strftime(\'%R\')');

  equals(
    this.moe.strftime('%R'),
    '07:34',
    'moe.strftime(\'%R\')');

  equals(
    this.eoe.strftime('%R'),
    '23:59',
    'eoe.strftime(\'%R\')');

  equals(
    this.local.strftime('%R'),
    '07:34',
    'local.strftime(\'%R\')');

  equals(
    this.soe.strftime('%T'),
    '00:00:00',
    'soe.strftime(\'%T\')');

  equals(
    this.moe.strftime('%T'),
    '07:34:41',
    'moe.strftime(\'%T\')');

  equals(
    this.eoe.strftime('%T'),
    '23:59:59',
    'eoe.strftime(\'%T\')');

  equals(
    this.local.strftime('%T'),
    '07:34:41',
    'local.strftime(\'%T\')');

  equals(
    this.soe.strftime('%X'),
    '00:00:00',
    'soe.strftime(\'%X\')');

  equals(
    this.moe.strftime('%X'),
    '07:34:41',
    'moe.strftime(\'%X\')');

  equals(
    this.eoe.strftime('%X'),
    '23:59:59',
    'eoe.strftime(\'%X\')');

  equals(
    this.local.strftime('%X'),
    '07:34:41',
    'local.strftime(\'%X\')');

  equals(
    this.soe.strftime('%c'),
    'Fri Jan  1 00:00:00 2010',
    'soe.strftime(\'%c\')');

  equals(
    this.moe.strftime('%c'),
    'Mon Jul 12 07:34:41 2010',
    'moe.strftime(\'%c\')');

  equals(
    this.eoe.strftime('%c'),
    'Fri Dec 31 23:59:59 2010',
    'eoe.strftime(\'%c\')');

  equals(
    this.local.strftime('%c'),
    'Mon Jul 12 07:34:41 2010',
    'local.strftime(\'%c\')');

  equals(
    this.soe.strftime('%D'),
    '01/01/10',
    'soe.strftime(\'%D\')');

  equals(
    this.moe.strftime('%D'),
    '07/12/10',
    'moe.strftime(\'%D\')');

  equals(
    this.eoe.strftime('%D'),
    '12/31/10',
    'eoe.strftime(\'%D\')');

  equals(
    this.local.strftime('%D'),
    '07/12/10',
    'local.strftime(\'%D\')');

  equals(
    this.soe.strftime('%F'),
    '2010-01-01',
    'soe.strftime(\'%F\')');

  equals(
    this.moe.strftime('%F'),
    '2010-07-12',
    'moe.strftime(\'%F\')');

  equals(
    this.eoe.strftime('%F'),
    '2010-12-31',
    'eoe.strftime(\'%F\')');

  equals(
    this.local.strftime('%F'),
    '2010-07-12',
    'local.strftime(\'%F\')');

  equals(
    this.soe.strftime('%x'),
    '01/01/10',
    'soe.strftime(\'%x\')');

  equals(
    this.moe.strftime('%x'),
    '07/12/10',
    'moe.strftime(\'%x\')');

  equals(
    this.eoe.strftime('%x'),
    '12/31/10',
    'eoe.strftime(\'%x\')');

  equals(
    this.local.strftime('%x'),
    '07/12/10',
    'local.strftime(\'%x\')');

  equals(
    this.soe.strftime('%a'),
    'Fri',
    'soe.strftime(\'%a\')');

  equals(
    this.moe.strftime('%a'),
    'Mon',
    'moe.strftime(\'%a\')');

  equals(
    this.eoe.strftime('%a'),
    'Fri',
    'eoe.strftime(\'%a\')');

  equals(
    this.local.strftime('%a'),
    'Mon',
    'local.strftime(\'%a\')');

  equals(
    this.soe.strftime('%A'),
    'Friday',
    'soe.strftime(\'%A\')');

  equals(
    this.moe.strftime('%A'),
    'Monday',
    'moe.strftime(\'%A\')');

  equals(
    this.eoe.strftime('%A'),
    'Friday',
    'eoe.strftime(\'%A\')');

  equals(
    this.local.strftime('%A'),
    'Monday',
    'local.strftime(\'%A\')');

  equals(
    this.soe.strftime('%d'),
    '01',
    'soe.strftime(\'%d\')');

  equals(
    this.moe.strftime('%d'),
    '12',
    'moe.strftime(\'%d\')');

  equals(
    this.eoe.strftime('%d'),
    '31',
    'eoe.strftime(\'%d\')');

  equals(
    this.local.strftime('%d'),
    '12',
    'local.strftime(\'%d\')');

  equals(
    this.soe.strftime('%e'),
    ' 1',
    'soe.strftime(\'%e\')');

  equals(
    this.moe.strftime('%e'),
    '12',
    'moe.strftime(\'%e\')');

  equals(
    this.eoe.strftime('%e'),
    '31',
    'eoe.strftime(\'%e\')');

  equals(
    this.local.strftime('%e'),
    '12',
    'local.strftime(\'%e\')');

  equals(
    this.soe.strftime('%j'),
    '001',
    'soe.strftime(\'%j\')');

  equals(
    this.moe.strftime('%j'),
    '193',
    'moe.strftime(\'%j\')');

  equals(
    this.eoe.strftime('%j'),
    '365',
    'eoe.strftime(\'%j\')');

  equals(
    this.local.strftime('%j'),
    '193',
    'local.strftime(\'%j\')');

  equals(
    this.soe.strftime('%u'),
    '5',
    'soe.strftime(\'%u\')');

  equals(
    this.moe.strftime('%u'),
    '1',
    'moe.strftime(\'%u\')');

  equals(
    this.eoe.strftime('%u'),
    '5',
    'eoe.strftime(\'%u\')');

  equals(
    this.local.strftime('%u'),
    '1',
    'local.strftime(\'%u\')');

  equals(
    this.soe.strftime('%w'),
    '5',
    'soe.strftime(\'%w\')');

  equals(
    this.moe.strftime('%w'),
    '1',
    'moe.strftime(\'%w\')');

  equals(
    this.eoe.strftime('%w'),
    '5',
    'eoe.strftime(\'%w\')');

  equals(
    this.local.strftime('%w'),
    '1',
    'local.strftime(\'%w\')');

  equals(
    this.soe.strftime('%b'),
    'Jan',
    'soe.strftime(\'%b\')');

  equals(
    this.moe.strftime('%b'),
    'Jul',
    'moe.strftime(\'%b\')');

  equals(
    this.eoe.strftime('%b'),
    'Dec',
    'eoe.strftime(\'%b\')');

  equals(
    this.local.strftime('%b'),
    'Jul',
    'local.strftime(\'%b\')');

  equals(
    this.soe.strftime('%B'),
    'January',
    'soe.strftime(\'%B\')');

  equals(
    this.moe.strftime('%B'),
    'July',
    'moe.strftime(\'%B\')');

  equals(
    this.eoe.strftime('%B'),
    'December',
    'eoe.strftime(\'%B\')');

  equals(
    this.local.strftime('%B'),
    'July',
    'local.strftime(\'%B\')');

  equals(
    this.soe.strftime('%h'),
    'Jan',
    'soe.strftime(\'%h\')');

  equals(
    this.moe.strftime('%h'),
    'Jul',
    'moe.strftime(\'%h\')');

  equals(
    this.eoe.strftime('%h'),
    'Dec',
    'eoe.strftime(\'%h\')');

  equals(
    this.local.strftime('%h'),
    'Jul',
    'local.strftime(\'%h\')');

  equals(
    this.soe.strftime('%m'),
    '01',
    'soe.strftime(\'%m\')');

  equals(
    this.moe.strftime('%m'),
    '07',
    'moe.strftime(\'%m\')');

  equals(
    this.eoe.strftime('%m'),
    '12',
    'eoe.strftime(\'%m\')');

  equals(
    this.local.strftime('%m'),
    '07',
    'local.strftime(\'%m\')');

  equals(
    this.soe.strftime('%C'),
    '20',
    'soe.strftime(\'%C\')');

  equals(
    this.moe.strftime('%C'),
    '20',
    'moe.strftime(\'%C\')');

  equals(
    this.eoe.strftime('%C'),
    '20',
    'eoe.strftime(\'%C\')');

  equals(
    this.local.strftime('%C'),
    '20',
    'local.strftime(\'%C\')');

  equals(
    this.soe.strftime('%y'),
    '10',
    'soe.strftime(\'%y\')');

  equals(
    this.moe.strftime('%y'),
    '10',
    'moe.strftime(\'%y\')');

  equals(
    this.eoe.strftime('%y'),
    '10',
    'eoe.strftime(\'%y\')');

  equals(
    this.local.strftime('%y'),
    '10',
    'local.strftime(\'%y\')');

  equals(
    this.soe.strftime('%Y'),
    '2010',
    'soe.strftime(\'%Y\')');

  equals(
    this.moe.strftime('%Y'),
    '2010',
    'moe.strftime(\'%Y\')');

  equals(
    this.eoe.strftime('%Y'),
    '2010',
    'eoe.strftime(\'%Y\')');

  equals(
    this.local.strftime('%Y'),
    '2010',
    'local.strftime(\'%Y\')');

  equals(
    this.soe.strftime('%H'),
    '00',
    'soe.strftime(\'%H\')');

  equals(
    this.moe.strftime('%H'),
    '07',
    'moe.strftime(\'%H\')');

  equals(
    this.eoe.strftime('%H'),
    '23',
    'eoe.strftime(\'%H\')');

  equals(
    this.local.strftime('%H'),
    '07',
    'local.strftime(\'%H\')');

  equals(
    this.soe.strftime('%k'),
    ' 0',
    'soe.strftime(\'%k\')');

  equals(
    this.moe.strftime('%k'),
    ' 7',
    'moe.strftime(\'%k\')');

  equals(
    this.eoe.strftime('%k'),
    '23',
    'eoe.strftime(\'%k\')');

  equals(
    this.local.strftime('%k'),
    ' 7',
    'local.strftime(\'%k\')');

  equals(
    this.soe.strftime('%I'),
    '12',
    'soe.strftime(\'%I\')');

  equals(
    this.moe.strftime('%I'),
    '07',
    'moe.strftime(\'%I\')');

  equals(
    this.eoe.strftime('%I'),
    '11',
    'eoe.strftime(\'%I\')');

  equals(
    this.local.strftime('%I'),
    '07',
    'local.strftime(\'%I\')');

  equals(
    this.soe.strftime('%l'),
    '12',
    'soe.strftime(\'%l\')');

  equals(
    this.moe.strftime('%l'),
    ' 7',
    'moe.strftime(\'%l\')');

  equals(
    this.eoe.strftime('%l'),
    '11',
    'eoe.strftime(\'%l\')');

  equals(
    this.local.strftime('%l'),
    ' 7',
    'local.strftime(\'%l\')');

  equals(
    this.soe.strftime('%M'),
    '00',
    'soe.strftime(\'%M\')');

  equals(
    this.moe.strftime('%M'),
    '34',
    'moe.strftime(\'%M\')');

  equals(
    this.eoe.strftime('%M'),
    '59',
    'eoe.strftime(\'%M\')');

  equals(
    this.local.strftime('%M'),
    '34',
    'local.strftime(\'%M\')');

  equals(
    this.soe.strftime('%p'),
    'AM',
    'soe.strftime(\'%p\')');

  equals(
    this.moe.strftime('%p'),
    'AM',
    'moe.strftime(\'%p\')');

  equals(
    this.eoe.strftime('%p'),
    'PM',
    'eoe.strftime(\'%p\')');

  equals(
    this.local.strftime('%p'),
    'AM',
    'local.strftime(\'%p\')');

  equals(
    this.soe.strftime('%P'),
    'am',
    'soe.strftime(\'%P\')');

  equals(
    this.moe.strftime('%P'),
    'am',
    'moe.strftime(\'%P\')');

  equals(
    this.eoe.strftime('%P'),
    'pm',
    'eoe.strftime(\'%P\')');

  equals(
    this.local.strftime('%P'),
    'am',
    'local.strftime(\'%P\')');

  equals(
    this.soe.strftime('%S'),
    '00',
    'soe.strftime(\'%S\')');

  equals(
    this.moe.strftime('%S'),
    '41',
    'moe.strftime(\'%S\')');

  equals(
    this.eoe.strftime('%S'),
    '59',
    'eoe.strftime(\'%S\')');

  equals(
    this.local.strftime('%S'),
    '41',
    'local.strftime(\'%S\')');

  equals(
    this.soe.strftime('%n%t%%'),
    '\n\t%',
    'soe.strftime(\'%E%O%n%t%%\')');
});
